/**
* © Copyright 2015 Hewlett Packard Enterprise Development LP
* Copyright (c) ActiveState 2014 - ALL RIGHTS RESERVED.
*/
package com.hpe.cloudfoundryjenkins;
import com.hpe.cloudfoundryjenkins.CloudFoundryPushPublisher.EnvironmentVariable;
import com.hpe.cloudfoundryjenkins.CloudFoundryPushPublisher.ManifestChoice;
import com.hpe.cloudfoundryjenkins.CloudFoundryPushPublisher.ServiceName;
import com.hpe.cloudfoundryjenkins.CloudFoundryPushPublisher.Service;
import com.cloudbees.plugins.credentials.CredentialsProvider;
import com.cloudbees.plugins.credentials.CredentialsScope;
import com.cloudbees.plugins.credentials.CredentialsStore;
import com.cloudbees.plugins.credentials.domains.Domain;
import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl;
import hudson.model.FreeStyleBuild;
import hudson.model.FreeStyleProject;
import hudson.model.Result;
import org.apache.commons.io.FileUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.fluent.Request;
import org.apache.http.util.EntityUtils;
import org.cloudfoundry.client.lib.CloudCredentials;
import org.cloudfoundry.client.lib.CloudFoundryClient;
import org.cloudfoundry.client.lib.domain.CloudService;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.ExtractResourceSCM;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.recipes.WithTimeout;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeNotNull;
public class CloudFoundryPushPublisherTest {
private static final String TEST_TARGET = System.getProperty("target");
private static final String TEST_USERNAME = System.getProperty("username");
private static final String TEST_PASSWORD = System.getProperty("password");
private static final String TEST_ORG = System.getProperty("org");
private static final String TEST_SPACE = System.getProperty("space");
private static final String TEST_MYSQL_SERVICE_TYPE = System.getProperty("mysqlServiceType", "mysql");
private static final String TEST_NONMYSQL_SERVICE_TYPE = System.getProperty("nonmysqlServiceType", "filesystem");
private static final String TEST_SERVICE_PLAN = System.getProperty("servicePlan", "free");
private static CloudFoundryClient client;
@Rule
public JenkinsRule j = new JenkinsRule();
@BeforeClass
public static void initialiseClient() throws IOException {
// Skip all tests of this class if no test CF platform is specified
assumeNotNull(TEST_TARGET);
String fullTarget = TEST_TARGET;
if (!fullTarget.startsWith("https://")) {
if (!fullTarget.startsWith("api.")) {
fullTarget = "https://api." + fullTarget;
} else {
fullTarget = "https://" + fullTarget;
}
}
URL targetUrl = new URL(fullTarget);
CloudCredentials credentials = new CloudCredentials(TEST_USERNAME, TEST_PASSWORD);
client = new CloudFoundryClient(credentials, targetUrl, TEST_ORG, TEST_SPACE);
client.login();
}
@Before
public void cleanCloudSpace() throws IOException {
client.deleteAllApplications();
client.deleteAllServices();
CredentialsStore store = CredentialsProvider.lookupStores(j.getInstance()).iterator().next();
store.addCredentials(Domain.global(),
new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "testCredentialsId", "",
TEST_USERNAME, TEST_PASSWORD));
}
@Test
public void testPerformSimplePushManifestFile() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text", content.contains("Hello from"));
}
@Test
public void testPerformSimplePushJenkinsConfig() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
ManifestChoice manifest =
new ManifestChoice("jenkinsConfig", null, "hello-java", 512, "", 0, 0, false,
"target/hello-java-1.0.war", "", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, manifest);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text", content.contains("Hello from"));
}
@Test
@WithTimeout(300)
public void testPerformResetIfExists() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
ManifestChoice manifest1 =
new ManifestChoice("jenkinsConfig", null, "hello-java", 512, "", 0, 0, false,
"target/hello-java-1.0.war", "", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf1 = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, true, 0, null, manifest1);
project.getPublishersList().add(cf1);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " 1 completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build 1 did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build 1 did not display staging logs", log.contains("Downloaded app package"));
assertEquals(512, client.getApplication("hello-java").getMemory());
project.getPublishersList().remove(cf1);
ManifestChoice manifest2 =
new ManifestChoice("jenkinsConfig", null, "hello-java", 256, "", 0, 0, false,
"target/hello-java-1.0.war", "", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf2 = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, true, 0, null, manifest2);
project.getPublishersList().add(cf2);
build = project.scheduleBuild2(0).get();
log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build 2 did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build 2 did not display staging logs", log.contains("Downloaded app package"));
assertEquals(256, client.getApplication("hello-java").getMemory());
}
@Test
public void testPerformMultipleInstances() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
ManifestChoice manifest =
new ManifestChoice("jenkinsConfig", null, "hello-java", 64, "", 4, 0, false,
"target/hello-java-1.0.war", "", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, manifest);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
assertTrue("Not the correct amount of instances", log.contains("4 instances running out of 4"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text", content.contains("Hello from"));
}
@Test
public void testPerformCustomBuildpack() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("heroku-node-js-sample.zip")));
ManifestChoice manifest =
new ManifestChoice("jenkinsConfig", null, "heroku-node-js-sample", 512, "", 1, 60, false, "",
"https://github.com/heroku/heroku-buildpack-nodejs", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, manifest);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloading and installing node"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text", content.contains("Hello World!"));
}
@Test
public void testPerformMultiAppManifest() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("multi-hello-java.zip")));
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
List<String> appUris = cf.getAppURIs();
System.out.println("App URIs : " + appUris);
String uri1 = appUris.get(0);
Request request1 = Request.Get(uri1);
HttpResponse response1 = request1.execute().returnResponse();
int statusCode1 = response1.getStatusLine().getStatusCode();
assertEquals("Get request for hello-java-1 did not respond 200 OK", 200, statusCode1);
String content1 = EntityUtils.toString(response1.getEntity());
System.out.println(content1);
assertTrue("hello-java-1 did not send back correct text", content1.contains("Hello from"));
assertEquals(200, client.getApplication("hello-java-1").getMemory());
String uri2 = appUris.get(1);
Request request2 = Request.Get(uri2);
HttpResponse response2 = request2.execute().returnResponse();
int statusCode2 = response2.getStatusLine().getStatusCode();
assertEquals("Get request for hello-java-2 did not respond 200 OK", 200, statusCode2);
String content2 = EntityUtils.toString(response2.getEntity());
System.out.println(content2);
assertTrue("hello-java-2 did not send back correct text", content2.contains("Hello from"));
assertEquals(300, client.getApplication("hello-java-2").getMemory());
}
@Test
public void testPerformCustomManifestFileLocation() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java-custom-manifest-location.zip")));
ManifestChoice manifestChoice = new ManifestChoice("manifestFile", "manifest/manifest.yml",
null, 0, null, 0, 0, false, null, null, null, null, null, null, null);
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, manifestChoice);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text", content.contains("Hello from"));
}
// All the tests below are failure cases
@Test
@WithTimeout(300)
public void testPerformCustomTimeout() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
ManifestChoice manifest =
new ManifestChoice("jenkinsConfig", null, "hello-java", 512, "", 0, 1, false,
"target/hello-java-1.0.war", "", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, manifest);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build succeeded where it should have failed", build.getResult().isWorseOrEqualTo(Result.FAILURE));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
assertTrue("Build did not display proper error message",
log.contains("ERROR: The application failed to start after"));
}
@Test
public void testPerformEnvVarsManifestFile() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("python-env.zip")));
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not have correct ENV_VAR_ONE", content.contains("ENV_VAR_ONE: value1"));
assertTrue("App did not have correct ENV_VAR_TWO", content.contains("ENV_VAR_TWO: value2"));
assertTrue("App did not have correct ENV_VAR_THREE", content.contains("ENV_VAR_THREE: value3"));
}
@Test
public void testPerformServicesNamesManifestFile() throws Exception {
CloudService service1 = new CloudService();
service1.setName("mysql_service1");
service1.setLabel(TEST_MYSQL_SERVICE_TYPE);
service1.setPlan(TEST_SERVICE_PLAN);
client.createService(service1);
CloudService service2 = new CloudService();
service2.setName("mysql_service2");
service2.setLabel(TEST_MYSQL_SERVICE_TYPE);
service2.setPlan(TEST_SERVICE_PLAN);
client.createService(service2);
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("python-env-services.zip")));
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not have mysql_service1 bound", content.contains("mysql_service1"));
assertTrue("App did not have mysql_service2 bound", content.contains("mysql_service2"));
}
@Test
public void testPerformCreateService() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-spring-mysql.zip")));
Service mysqlService = new Service("mysql-spring", TEST_MYSQL_SERVICE_TYPE, TEST_SERVICE_PLAN, true);
List<Service> serviceList = new ArrayList<Service>();
serviceList.add(mysqlService);
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, serviceList, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text",
content.contains("State [id=1, stateCode=MA, name=Massachusetts]"));
}
@Test
public void testPerformResetService() throws Exception {
CloudService existingService = new CloudService();
existingService.setName("mysql-spring");
// Not the right type of service, must be reset for hello-mysql-spring to work
existingService.setLabel(TEST_NONMYSQL_SERVICE_TYPE);
existingService.setPlan(TEST_SERVICE_PLAN);
client.createService(existingService);
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-spring-mysql.zip")));
Service mysqlService = new Service("mysql-spring", TEST_MYSQL_SERVICE_TYPE, TEST_SERVICE_PLAN, true);
List<Service> serviceList = new ArrayList<Service>();
serviceList.add(mysqlService);
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, serviceList, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 200 OK", 200, statusCode);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
assertTrue("App did not send back correct text",
content.contains("State [id=1, stateCode=MA, name=Massachusetts]"));
}
@Test
public void testPerformNoRoute() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
ManifestChoice manifest =
new ManifestChoice("jenkinsConfig", null, "hello-java", 512, "", 0, 0, true,
"target/hello-java-1.0.war", "", "", "", "",
new ArrayList<EnvironmentVariable>(), new ArrayList<ServiceName>());
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"testCredentialsId", false, false, 0, null, manifest);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String log = FileUtils.readFileToString(build.getLogFile());
System.out.println(log);
assertTrue("Build did not succeed", build.getResult().isBetterOrEqualTo(Result.SUCCESS));
assertTrue("Build did not display staging logs", log.contains("Downloaded app package"));
System.out.println("App URI : " + cf.getAppURIs().get(0));
String uri = cf.getAppURIs().get(0);
Request request = Request.Get(uri);
HttpResponse response = request.execute().returnResponse();
int statusCode = response.getStatusLine().getStatusCode();
assertEquals("Get request did not respond 404 Not Found", 404, statusCode);
}
@Test
public void testPerformUnknownHost() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher("https://does-not-exist.local",
TEST_ORG, TEST_SPACE, "testCredentialsId", false, false, 0, null, null);
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String s = FileUtils.readFileToString(build.getLogFile());
System.out.println(s);
assertTrue("Build succeeded where it should have failed", build.getResult().isWorseOrEqualTo(Result.FAILURE));
assertTrue("Build did not write error message", s.contains("ERROR: Unknown host"));
}
@Test
public void testPerformWrongCredentials() throws Exception {
FreeStyleProject project = j.createFreeStyleProject();
project.setScm(new ExtractResourceSCM(getClass().getResource("hello-java.zip")));
CredentialsStore store = CredentialsProvider.lookupStores(j.getInstance()).iterator().next();
store.addCredentials(Domain.global(),
new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "wrongCredentialsId", "",
"wrongName", "wrongPass"));
CloudFoundryPushPublisher cf = new CloudFoundryPushPublisher(TEST_TARGET, TEST_ORG, TEST_SPACE,
"wrongCredentialsId", false, false, 0, null, ManifestChoice.defaultManifestFileConfig());
project.getPublishersList().add(cf);
FreeStyleBuild build = project.scheduleBuild2(0).get();
System.out.println(build.getDisplayName() + " completed");
String s = FileUtils.readFileToString(build.getLogFile());
System.out.println(s);
assertTrue("Build succeeded where it should have failed", build.getResult().isWorseOrEqualTo(Result.FAILURE));
assertTrue("Build did not write error message", s.contains("ERROR: Wrong username or password"));
}
}